package com.tencent.cloud.iov.util.rx;

import android.support.annotation.CallSuper;

import io.reactivex.disposables.Disposable;

/**
 * 仅接受一个数据的观察者
 *
 * Subject 等数据源可以发射多个数据，使用此类可以在接受到一个数据后，自动取消订阅关系
 *
 * @author showxiao
 * @date 2018/10/18
 */
public class SingleElementObserver<T> extends SimpleObserver<T> {

    private Disposable mDisposable;

    @CallSuper
    @Override
    public void onSubscribe(Disposable d) {
        super.onSubscribe(d);
        mDisposable = d;
    }

    @CallSuper
    @Override
    public void onNext(T t) {
        super.onNext(t);
        RxUtils.dispose(mDisposable);
        mDisposable = null;
    }
}
